home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src
/
matrix.s
< prev
next >
Wrap
Text File
|
1999-02-04
|
61KB
|
3,384 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/matrix.c
mc68030
mc68881
XREF _gl_error
XREF _gl_problem
XREF _gl_ResizeBuffersMESA
XREF _q_memcpy
XREF _fabs__r
XREF _sqrt__r
XREF _cos__r
XREF _sin__r
XREF _std__in
XREF _std__out
XREF _std__err
XREF _CC
SECTION "_Identity:1",DATA
_Identity
dc.l $3F800000,0,0,0,0,$3F800000,0,0,0,0,$3F800000
dc.l 0,0,0,0,$3F800000
SECTION "_matmul:0",CODE
rts
;static void matmul( GLfloat *product, const GLfloat *a, const GLfloa
_matmul
movem.l d2/a2/a3,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6,-(a7)
move.l $54(a7),a0
move.l $4C(a7),a1
move.l $50(a7),a2
L116
; for (i = 0;
moveq #0,d0
bra L118
L117
; GLfloat ai0=A(i,0)
move.l d0,d1
asl.l #2,d1
add.l a2,d1
move.l d1,a3
fmove.s (a3),fp0
; GLfloat ai0=A(i,0), ai1=A(i,1)
moveq #$10,d1
add.l a2,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s (a3),fp4
; GLfloat ai0=A(i,0), a
moveq #$20,d1
add.l a2,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s (a3),fp3
; GLfloat ai0=A
moveq #$30,d1
add.l a2,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s (a3),fp2
; P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0)
fmove.s (a0),fp1
fmul.x fp0,fp1
moveq #4,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp4,fp5
fadd.x fp5,fp1
moveq #$8,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp3,fp5
fadd.x fp5,fp1
moveq #$C,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp2,fp5
fadd.x fp5,fp1
move.l d0,d1
asl.l #2,d1
add.l a1,d1
move.l d1,a3
fmove.s fp1,(a3)
; P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1)
moveq #$10,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp1
fmul.x fp0,fp1
moveq #$14,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp4,fp5
fadd.x fp5,fp1
moveq #$18,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp3,fp5
fadd.x fp5,fp1
moveq #$1C,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp2,fp5
fadd.x fp5,fp1
moveq #$10,d1
add.l a1,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s fp1,(a3)
; P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2)
moveq #$20,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp1
fmul.x fp0,fp1
moveq #$24,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp4,fp5
fadd.x fp5,fp1
moveq #$28,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp3,fp5
fadd.x fp5,fp1
moveq #$2C,d1
add.l a0,d1
move.l d1,a3
fmove.s (a3),fp5
fmul.x fp2,fp5
fadd.x fp5,fp1
moveq #$20,d1
add.l a1,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s fp1,(a3)
; P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3)
moveq #$30,d1
add.l a0,d1
move.l d1,a3
fmul.s (a3),fp0
moveq #$34,d1
add.l a0,d1
move.l d1,a3
fmul.s (a3),fp4
fadd.x fp4,fp0
moveq #$38,d1
add.l a0,d1
move.l d1,a3
fmul.s (a3),fp3
fadd.x fp3,fp0
moveq #$3C,d1
add.l a0,d1
move.l d1,a3
fmul.s (a3),fp2
fadd.x fp2,fp0
moveq #$30,d1
add.l a1,d1
move.l d0,d2
asl.l #2,d2
add.l d1,d2
move.l d2,a3
fmove.s fp0,(a3)
addq.l #1,d0
L118
cmp.l #4,d0
blt L117
L119
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6
movem.l (a7)+,d2/a2/a3
rts
SECTION "_invert_matrix:0",CODE
;static GLboolean invert_matrix( const GLfloat *m, GLfloat *out )
_invert_matrix
L157 EQU -$BC
link a5,#L157
movem.l a2-a4,-(a7)
fmovem.x fp2/fp3/fp4/fp5,-(a7)
move.l $8(a5),a0
L120
; r0 = wtmp[0], r1 = wtmp[1], r2 = wtmp[2], r3 = wtmp[3];
lea -$80(a5),a1
move.l a1,-$98(a5)
lea -$80(a5),a1
moveq #$20,d0
add.l a1,d0
move.l d0,-$9C(a5)
lea -$80(a5),a1
lea $40(a1),a2
lea -$80(a5),a1
moveq #$60,d0
add.l a1,d0
move.l d0,a4
; r0[0] = MAT(m,0,0), r0[1] = MAT(m,0,1),
fmove.s (a0),fp0
move.l -$98(a5),a1
fmove.s fp0,(a1)
move.l -$98(a5),a3
move.l $10(a0),4(a3)
move.l -$98(a5),a3
move.l $20(a0),$8(a3)
move.l -$98(a5),a3
move.l $30(a0),$C(a3)
move.l -$98(a5),a3
move.l #$3F800000,$10(a3)
move.l -$98(a5),a3
clr.l $1C(a3)
move.l -$98(a5),a3
clr.l $18(a3)
move.l -$98(a5),a3
clr.l $14(a3)
move.l -$9C(a5),a1
move.l 4(a0),(a1)
move.l -$9C(a5),a3
move.l $14(a0),4(a3)
move.l -$9C(a5),a3
move.l $24(a0),$8(a3)
move.l -$9C(a5),a3
move.l $34(a0),$C(a3)
move.l -$9C(a5),a3
move.l #$3F800000,$14(a3)
move.l -$9C(a5),a3
clr.l $1C(a3)
move.l -$9C(a5),a3
clr.l $18(a3)
move.l -$9C(a5),a3
clr.l $10(a3)
move.l $8(a0),(a2)
move.l $18(a0),4(a2)
move.l $28(a0),$8(a2)
move.l $38(a0),$C(a2)
move.l #$3F800000,$18(a2)
clr.l $1C(a2)
clr.l $14(a2)
clr.l $10(a2)
move.l a4,a1
move.l $C(a0),(a1)
move.l $1C(a0),4(a4)
move.l $2C(a0),$8(a4)
fmove.s $3C(a0),fp0
fmove.s fp0,$C(a4)
move.l #$3F800000,$1C(a4)
clr.l $18(a4)
clr.l $14(a4)
clr.l $10(a4)
; if (fabs(r3[0])>fabs(r2[0])) SWAP_ROWS(r3, r2)
move.l a4,a0
fmove.s (a0),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
fmove.s (a2),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L122
L121
; if (fabs(r3[0])>fabs(
move.l a4,a0
; if (fabs(r3[0])>fabs(
move.l a2,a4
; if (fabs(r3[0])>fabs(
move.l a0,a2
L122
; if (fabs(r2[0])>fabs(r1[0])) SWAP_ROWS(r2, r1)
fmove.s (a2),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
move.l -$9C(a5),a0
fmove.s (a0),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L124
L123
; if (fabs(r2[0])>fabs(
move.l a2,a0
; if (fabs(r2[0])>fabs(
move.l -$9C(a5),a2
; if (fabs(r2[0])>fabs(
move.l a0,-$9C(a5)
L124
; if (fabs(r1[0])>fabs(r0[0])) SWAP_ROWS(r1, r0)
move.l -$9C(a5),a0
fmove.s (a0),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
move.l -$98(a5),a0
fmove.s (a0),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L126
L125
; if (fabs(r1[0])>fabs(
move.l -$9C(a5),a0
; if (fabs(r1[0])>fabs(
move.l -$98(a5),-$9C(a5)
; if (fabs(r1[0])>fabs(
move.l a0,-$98(a5)
L126
; if (0.0 == r0[0])
move.l -$98(a5),a0
fmove.s (a0),fp0
ftst.d fp0
fbne.b L128
L127
moveq #0,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,a2-a4
unlk a5
rts
L128
; m1 = r1[0]/r0[0];
move.l -$9C(a5),a0
fmove.s (a0),fp3
move.l -$98(a5),a0
fmove.s (a0),fp0
fdiv.x fp0,fp3
; m2 = r2[0]/r0[0];
fmove.s (a2),fp2
move.l -$98(a5),a0
fmove.s (a0),fp0
fdiv.x fp0,fp2
; m3 = r3[0]/r0[0];
move.l a4,a0
fmove.s (a0),fp1
move.l -$98(a5),a0
fmove.s (a0),fp0
fdiv.x fp0,fp1
; s = r0[1];
move.l -$98(a5),a1
fmove.s 4(a1),fp0
; r1[1] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea 4(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[1] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea 4(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[1] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea 4(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
; s = r0[2];
move.l -$98(a5),a1
fmove.s $8(a1),fp0
; r1[2] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea $8(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[2] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea $8(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[2] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea $8(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
; s = r0[3];
move.l -$98(a5),a1
fmove.s $C(a1),fp0
; r1[3] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea $C(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[3] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea $C(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[3] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea $C(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
; s = r0[4];
move.l -$98(a5),a1
fmove.s $10(a1),fp0
; if (s != 0.0)
fmove.x fp0,fp4
ftst.d fp4
fbeq.b L130
L129
; r1[4] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea $10(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[4] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea $10(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[4] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea $10(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
L130
; s = r0[5];
move.l -$98(a5),a1
fmove.s $14(a1),fp0
; if (s != 0.0)
fmove.x fp0,fp4
ftst.d fp4
fbeq.b L132
L131
; r1[5] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea $14(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[5] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea $14(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[5] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea $14(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
L132
; s = r0[6];
move.l -$98(a5),a1
fmove.s $18(a1),fp0
; if (s != 0.0)
fmove.x fp0,fp4
ftst.d fp4
fbeq.b L134
L133
; r1[6] -= m1 * s;
fmove.x fp3,fp5
fmul.x fp0,fp5
move.l -$9C(a5),a1
lea $18(a1),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r2[6] -= m2 * s;
fmove.x fp2,fp5
fmul.x fp0,fp5
lea $18(a2),a0
fmove.s (a0),fp4
fsub.x fp5,fp4
fmove.s fp4,(a0)
; r3[6] -= m3 * s;
fmove.x fp1,fp4
fmul.x fp0,fp4
lea $18(a4),a0
fmove.s (a0),fp0
fsub.x fp4,fp0
fmove.s fp0,(a0)
L134
; s = r0[7];
move.l -$98(a5),a1
fmove.s $1C(a1),fp0
; if (s != 0.0)
fmove.x fp0,fp4
ftst.d fp4
fbeq.b L136
L135
; r1[7] -= m1 * s;
fmul.x fp0,fp3
move.l -$9C(a5),a1
lea $1C(a1),a0
fmove.s (a0),fp4
fsub.x fp3,fp4
fmove.s fp4,(a0)
; r2[7] -= m2 * s;
fmul.x fp0,fp2
lea $1C(a2),a0
fmove.s (a0),fp3
fsub.x fp2,fp3
fmove.s fp3,(a0)
; r3[7] -= m3 * s;
fmul.x fp0,fp1
lea $1C(a4),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
L136
; if (fabs(r3[1])>fabs(r2[1])) SWAP_ROWS(r3, r2)
fmove.s 4(a4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
fmove.s 4(a2),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L138
L137
; if (fabs(r3[1])>fabs(
move.l a4,a0
; if (fabs(r3[1])>fabs(
move.l a2,a4
; if (fabs(r3[1])>fabs(
move.l a0,a2
L138
; if (fabs(r2[1])>fabs(r1[1])) SWAP_ROWS(r2, r1)
fmove.s 4(a2),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
move.l -$9C(a5),a1
fmove.s 4(a1),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L140
L139
; if (fabs(r2[1])>fabs(
move.l a2,a0
; if (fabs(r2[1])>fabs(
move.l -$9C(a5),a2
; if (fabs(r2[1])>fabs(
move.l a0,-$9C(a5)
L140
; if (0.0 == r1[1])
move.l -$9C(a5),a1
fmove.s 4(a1),fp0
ftst.d fp0
fbne.b L142
L141
moveq #0,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,a2-a4
unlk a5
rts
L142
; m2 = r2[1]/r1[1];
move.l -$9C(a5),a1
fmove.s 4(a2),fp2
fdiv.s 4(a1),fp2
; m3 = r3[1]/r1[1];
move.l -$9C(a5),a1
fmove.s 4(a4),fp1
fdiv.s 4(a1),fp1
; r2[2] -= m2 * r1[2];
move.l -$9C(a5),a1
fmove.x fp2,fp3
fmul.s $8(a1),fp3
lea $8(a2),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
; r3[2] -= m3 * r1[2];
move.l -$9C(a5),a1
fmove.x fp1,fp3
fmul.s $8(a1),fp3
lea $8(a4),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
; r2[3] -= m2 * r1[3];
move.l -$9C(a5),a1
fmove.x fp2,fp3
fmul.s $C(a1),fp3
lea $C(a2),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
; r3[3] -= m3 * r1[3];
move.l -$9C(a5),a1
fmove.x fp1,fp3
fmul.s $C(a1),fp3
lea $C(a4),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
; s = r1[4];
move.l -$9C(a5),a1
fmove.s $10(a1),fp0
; if (0.0 != s)
fmove.x fp0,fp3
ftst.d fp3
fbeq.b L144
L143
; r2[4] -= m2 * s;
fmove.x fp2,fp4
fmul.x fp0,fp4
lea $10(a2),a0
fmove.s (a0),fp3
fsub.x fp4,fp3
fmove.s fp3,(a0)
; r3[4] -= m3 * s;
fmove.x fp1,fp3
fmul.x fp0,fp3
lea $10(a4),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
L144
; s = r1[5];
move.l -$9C(a5),a1
fmove.s $14(a1),fp0
; if (0.0 != s)
fmove.x fp0,fp3
ftst.d fp3
fbeq.b L146
L145
; r2[5] -= m2 * s;
fmove.x fp2,fp4
fmul.x fp0,fp4
lea $14(a2),a0
fmove.s (a0),fp3
fsub.x fp4,fp3
fmove.s fp3,(a0)
; r3[5] -= m3 * s;
fmove.x fp1,fp3
fmul.x fp0,fp3
lea $14(a4),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
L146
; s = r1[6];
move.l -$9C(a5),a1
fmove.s $18(a1),fp0
; if (0.0 != s)
fmove.x fp0,fp3
ftst.d fp3
fbeq.b L148
L147
; r2[6] -= m2 * s;
fmove.x fp2,fp4
fmul.x fp0,fp4
lea $18(a2),a0
fmove.s (a0),fp3
fsub.x fp4,fp3
fmove.s fp3,(a0)
; r3[6] -= m3 * s;
fmove.x fp1,fp3
fmul.x fp0,fp3
lea $18(a4),a0
fmove.s (a0),fp0
fsub.x fp3,fp0
fmove.s fp0,(a0)
L148
; s = r1[7];
move.l -$9C(a5),a1
fmove.s $1C(a1),fp0
; if (0.0 != s)
fmove.x fp0,fp3
ftst.d fp3
fbeq.b L150
L149
; r2[7] -= m2 * s;
fmul.x fp0,fp2
lea $1C(a2),a0
fmove.s (a0),fp3
fsub.x fp2,fp3
fmove.s fp3,(a0)
; r3[7] -= m3 * s;
fmul.x fp0,fp1
lea $1C(a4),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
L150
; if (fabs(r3[2])>fabs(r2[2])) SWAP_ROWS(r3, r2)
fmove.s $8(a4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
fmove.x fp0,fp2
addq.w #$8,a7
fmove.s $8(a2),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.x fp0,fp2
fbole.b L152
L151
; if (fabs(r3[2])>fabs(
move.l a4,a0
; if (fabs(r3[2])>fabs(
move.l a2,a4
; if (fabs(r3[2])>fabs(
move.l a0,a2
L152
; if (0.0 == r2[2])
fmove.s $8(a2),fp0
ftst.d fp0
fbne.b L154
L153
moveq #0,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,a2-a4
unlk a5
rts
L154
; m3 = r3[2]/r2[2];
fmove.s $8(a4),fp1
fdiv.s $8(a2),fp1
; r3[3] -= m3 * r2[3], r3[4] -= m3 * r2[4],
fmove.x fp1,fp2
fmul.s $C(a2),fp2
lea $C(a4),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.x fp1,fp2
fmul.s $10(a2),fp2
lea $10(a4),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.x fp1,fp2
fmul.s $14(a2),fp2
lea $14(a4),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.x fp1,fp2
fmul.s $18(a2),fp2
lea $18(a4),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmul.s $1C(a2),fp1
lea $1C(a4),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
; if (0.0 == r3[3])
fmove.s $C(a4),fp0
ftst.d fp0
fbne.b L156
L155
moveq #0,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,a2-a4
unlk a5
rts
L156
; s = 1.0/r3[3];
fmove.s $C(a4),fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
; r3[4] *= s;
lea $10(a4),a0
fmove.s (a0),fp1
fmul.x fp0,fp1
fmove.s fp1,(a0)
; r3[5] *= s;
lea $14(a4),a0
fmove.s (a0),fp1
fmul.x fp0,fp1
fmove.s fp1,(a0)
; r3[6] *= s;
lea $18(a4),a0
fmove.s (a0),fp1
fmul.x fp0,fp1
fmove.s fp1,(a0)
; r3[7] *= s;
lea $1C(a4),a0
fmove.s (a0),fp1
fmul.x fp0,fp1
fmove.s fp1,(a0)
; m2 = r2[3];
fmove.s $C(a2),fp2
; s = 1.0/r2[2];
fmove.s $8(a2),fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
; r2[4] = s * (r2[4] - r3[4] * m2), r2[5] = s * (r2[5] - r3[5] * m2)
fmove.s $10(a4),fp3
fmul.x fp2,fp3
fmove.s $10(a2),fp1
fsub.x fp3,fp1
fmul.x fp0,fp1
fmove.s fp1,$10(a2)
fmove.s $14(a4),fp3
fmul.x fp2,fp3
fmove.s $14(a2),fp1
fsub.x fp3,fp1
fmul.x fp0,fp1
fmove.s fp1,$14(a2)
fmove.s $18(a4),fp3
fmul.x fp2,fp3
fmove.s $18(a2),fp1
fsub.x fp3,fp1
fmul.x fp0,fp1
fmove.s fp1,$18(a2)
fmove.s $1C(a4),fp3
fmul.x fp2,fp3
fmove.s $1C(a2),fp1
fsub.x fp3,fp1
fmul.x fp1,fp0
fmove.s fp0,$1C(a2)
; m1 = r1[3];
move.l -$9C(a5),a1
fmove.s $C(a1),fp3
; r1[4] -= r3[4] * m1, r1[5] -= r3[5] * m1,
fmove.s $10(a4),fp1
fmul.x fp3,fp1
move.l -$9C(a5),a1
lea $10(a1),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
fmove.s $14(a4),fp1
fmul.x fp3,fp1
move.l -$9C(a5),a1
lea $14(a1),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
fmove.s $18(a4),fp1
fmul.x fp3,fp1
move.l -$9C(a5),a1
lea $18(a1),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
fmove.s $1C(a4),fp1
fmul.x fp3,fp1
move.l -$9C(a5),a1
lea $1C(a1),a0
fmove.s (a0),fp0
fsub.x fp1,fp0
fmove.s fp0,(a0)
; m0 = r0[3];
move.l -$98(a5),a1
fmove.s $C(a1),fp1
; r0[4] -= r3[4] * m0, r0[5] -= r3[5] * m0,
fmove.s $10(a4),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $10(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $14(a4),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $14(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $18(a4),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $18(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $1C(a4),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $1C(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
; m1 = r1[2];
move.l -$9C(a5),a1
fmove.s $8(a1),fp3
; s = 1.0/r1[1];
move.l -$9C(a5),a1
fmove.s 4(a1),fp0
fmove.d #$.3FF00000.00000000,fp1
fdiv.x fp0,fp1
fmove.x fp1,fp0
; r1[4] = s * (r1[4] - r2[4] * m1), r1[5] = s * (r1[5] - r2[5] * m1)
move.l -$9C(a5),a1
fmove.s $10(a2),fp2
fmul.x fp3,fp2
fmove.s $10(a1),fp1
fsub.x fp2,fp1
fmul.x fp0,fp1
move.l -$9C(a5),a1
fmove.s fp1,$10(a1)
move.l -$9C(a5),a1
fmove.s $14(a2),fp2
fmul.x fp3,fp2
fmove.s $14(a1),fp1
fsub.x fp2,fp1
fmul.x fp0,fp1
move.l -$9C(a5),a1
fmove.s fp1,$14(a1)
move.l -$9C(a5),a1
fmove.s $18(a2),fp2
fmul.x fp3,fp2
fmove.s $18(a1),fp1
fsub.x fp2,fp1
fmul.x fp0,fp1
move.l -$9C(a5),a1
fmove.s fp1,$18(a1)
move.l -$9C(a5),a1
fmove.s $1C(a2),fp2
fmul.x fp3,fp2
fmove.s $1C(a1),fp1
fsub.x fp2,fp1
fmul.x fp1,fp0
move.l -$9C(a5),a1
fmove.s fp0,$1C(a1)
; m0 = r0[2];
move.l -$98(a5),a1
fmove.s $8(a1),fp1
; r0[4] -= r2[4] * m0, r0[5] -= r2[5] * m0,
fmove.s $10(a2),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $10(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $14(a2),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $14(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $18(a2),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $18(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
fmove.s $1C(a2),fp2
fmul.x fp1,fp2
move.l -$98(a5),a1
lea $1C(a1),a0
fmove.s (a0),fp0
fsub.x fp2,fp0
fmove.s fp0,(a0)
; m0 = r0[1];
move.l -$98(a5),a1
fmove.s 4(a1),fp1
; s = 1.0/r0[0];
move.l -$98(a5),a0
fmove.s (a0),fp0
fmove.d #$.3FF00000.00000000,fp2
fdiv.x fp0,fp2
fmove.x fp2,fp0
; r0[4] = s * (r0[4] - r1[4] * m0), r0[5] = s * (r0[5] - r1[5] * m0)
move.l -$98(a5),a1
fmove.s $10(a1),fp2
move.l -$9C(a5),a1
fmove.s $10(a1),fp3
fmul.x fp1,fp3
fsub.x fp3,fp2
fmul.x fp0,fp2
move.l -$98(a5),a1
fmove.s fp2,$10(a1)
move.l -$98(a5),a1
fmove.s $14(a1),fp2
move.l -$9C(a5),a1
fmove.s $14(a1),fp3
fmul.x fp1,fp3
fsub.x fp3,fp2
fmul.x fp0,fp2
move.l -$98(a5),a1
fmove.s fp2,$14(a1)
move.l -$98(a5),a1
fmove.s $18(a1),fp2
move.l -$9C(a5),a1
fmove.s $18(a1),fp3
fmul.x fp1,fp3
fsub.x fp3,fp2
fmul.x fp0,fp2
move.l -$98(a5),a1
fmove.s fp2,$18(a1)
move.l -$98(a5),a1
fmove.s $1C(a1),fp2
move.l -$9C(a5),a1
fmove.s $1C(a1),fp3
fmul.x fp1,fp3
fsub.x fp3,fp2
fmul.x fp2,fp0
move.l -$98(a5),a1
fmove.s fp0,$1C(a1)
; MAT(out,0,0) = r0[4];
move.l -$98(a5),a1
move.l $C(a5),a0
move.l $10(a1),(a0)
; MAT(out,0,1) = r0[5],
move.l -$98(a5),a1
fmove.s $14(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$10(a1)
move.l -$98(a5),a1
fmove.s $18(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$20(a1)
; MAT(out,0,3) = r0[7],
move.l -$98(a5),a1
fmove.s $1C(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$30(a1)
move.l -$9C(a5),a1
fmove.s $10(a1),fp0
move.l $C(a5),a1
fmove.s fp0,4(a1)
; MAT(out,1,1) = r1[5],
move.l -$9C(a5),a1
fmove.s $14(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$14(a1)
move.l -$9C(a5),a1
fmove.s $18(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$24(a1)
; MAT(out,1,3) = r1[7],
move.l -$9C(a5),a1
fmove.s $1C(a1),fp0
move.l $C(a5),a1
fmove.s fp0,$34(a1)
move.l $C(a5),a1
move.l $10(a2),$8(a1)
; MAT(out,2,1) = r2[5],
move.l $C(a5),a1
move.l $14(a2),$18(a1)
move.l $C(a5),a1
move.l $18(a2),$28(a1)
; && m[3]==0.0F && m[7]==0.0F && m[11]==0.
move.l $C(a5),a1
move.l $1C(a2),$38(a1)
move.l $C(a5),a1
move.l $10(a4),$C(a1)
; MAT(out,3,1) = r3[5],
move.l $C(a5),a1
move.l $14(a4),$1C(a1)
move.l $C(a5),a1
move.l $18(a4),$2C(a1)
; MAT(out,3,3) = r3[7];
move.l $C(a5),a1
move.l $1C(a4),$3C(a1)
moveq #1,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,a2-a4
unlk a5
rts
SECTION "_is_identity:0",CODE
;static GLboolean is_identity( const GLfloat m[16] )
_is_identity
move.l 4(a7),a0
L158
; if ( m[0]==1.0F && m[4]==0.0F && m[ 8]==0.0F && m[12]==0.0F
fmove.s (a0),fp0
fcmp.s #$.3F800000,fp0
fbne.b L175
L159
fmove.s $10(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L160
fmove.s $20(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L161
fmove.s $30(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L162
fmove.s 4(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L163
fmove.s $14(a0),fp0
fcmp.s #$.3F800000,fp0
fbne.b L175
L164
fmove.s $24(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L165
fmove.s $34(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L166
fmove.s $8(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L167
fmove.s $18(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L168
fmove.s $28(a0),fp0
fcmp.s #$.3F800000,fp0
fbne.b L175
L169
fmove.s $38(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L170
fmove.s $C(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L171
fmove.s $1C(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L172
fmove.s $2C(a0),fp0
fcmp.s #$.00000000,fp0
fbne.b L175
L173
fmove.s $3C(a0),fp0
fcmp.s #$.3F800000,fp0
fbne.b L175
L174
moveq #1,d0
rts
L175
moveq #0,d0
rts
SECTION "_gl_analyze_modelview_matrix:0",CODE
;void gl_analyze_modelview_matrix( GLcontext *ctx )
XDEF _gl_analyze_modelview_matrix
_gl_analyze_modelview_matrix
movem.l a2/a3,-(a7)
move.l $C(a7),a3
L176
; const GLfloat *m = ctx->ModelViewMatrix;
lea $9FA(a3),a2
; if (is_identity(m))
move.l a2,-(a7)
jsr _is_identity
addq.w #4,a7
tst.b d0
beq.b L178
L177
; ctx->ModelViewMatrixType = MATRIX_IDENTITY;
move.l a3,a0
move.l #1,$9F6(a0)
bra L208
L178
; else if ( m[4]==0.0F && m[ 8]==0.0F
fmove.s $10(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L179
fmove.s $20(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L180
fmove.s 4(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L181
fmove.s $24(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L182
fmove.s $8(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L183
fmove.s $18(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L184
fmove.s $28(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L191
L185
fmove.s $38(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L186
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L187
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L188
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L191
L189
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L191
L190
; ctx->ModelViewMatrixType = MATRIX_2D_NO_ROT;
move.l a3,a0
move.l #5,$9F6(a0)
bra L208
L191
; else if ( m[ 8]==0.0F
fmove.s $20(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L192
fmove.s $24(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L193
fmove.s $8(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L194
fmove.s $18(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L195
fmove.s $28(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L202
L196
fmove.s $38(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L197
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L198
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L199
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L202
L200
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L202
L201
; ctx->ModelViewMatrixType = MATRIX_2D;
move.l a3,a0
move.l #4,$9F6(a0)
bra.b L208
L202
; else if (m[3]==0.0F && m[7]==0.0F && m[11]==0.0F && m[15]
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L207
L203
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L207
L204
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L207
L205
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L207
L206
; ctx->ModelViewMatrixType = MATRIX_3D;
move.l a3,a0
move.l #6,$9F6(a0)
bra.b L208
L207
; ctx->ModelViewMatrixType = MATRIX_GENERAL;
move.l a3,a0
clr.l $9F6(a0)
L208
; if (!invert_matrix( ctx->ModelViewMatrix, ctx->ModelViewInv ))
pea $A3A(a3)
pea $9FA(a3)
jsr _invert_matrix
addq.w #$8,a7
tst.b d0
bne.b L210
L209
; ctx->ModelViewIn
pea $40.w
pea _Identity(a6)
pea $A3A(a3)
jsr _q_memcpy
add.w #$C,a7
L210
; ctx->NewModelViewMatrix = GL_FALSE;
move.l a3,a0
clr.b $9F4(a0)
movem.l (a7)+,a2/a3
rts
SECTION "_gl_analyze_projection_matrix:0",CODE
;void gl_analyze_projection_matrix( GLcontext *ctx )
XDEF _gl_analyze_projection_matrix
_gl_analyze_projection_matrix
movem.l a2/a3,-(a7)
move.l $C(a7),a3
L211
; const GLfloat *m = ctx->ProjectionMatrix;
lea $1284(a3),a2
; if (is_identity(m))
move.l a2,-(a7)
jsr _is_identity
addq.w #4,a7
tst.b d0
beq.b L213
L212
; ctx->ProjectionMatrixType = MATRIX_IDENTITY;
move.l a3,a0
move.l #1,$1280(a0)
bra L236
L213
; M(1,3) = 0.0F;
fmove.s $10(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L214
fmove.s $20(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L215
fmove.s 4(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L216
fmove.s $24(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L217
fmove.s $8(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L218
fmove.s $18(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L219
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L220
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L221
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L224
L222
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L224
L223
; ctx->ProjectionMatrixType = MATRIX_ORTHO;
move.l a3,a0
move.l #2,$1280(a0)
bra L236
L224
; else if ( m[4]==0.0F && m
fmove.s $10(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L225
fmove.s $30(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L226
fmove.s 4(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L227
fmove.s $34(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L228
fmove.s $8(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L229
fmove.s $18(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L230
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L231
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L232
fmove.s $2C(a2),fp0
fcmp.s #$.BF800000,fp0
fbne.b L235
L233
fmove.s $3C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L235
L234
; ctx->ProjectionMatrixType = MATRIX_PERSPECTIVE;
move.l a3,a0
move.l #3,$1280(a0)
bra.b L236
L235
; ctx->ProjectionMatrixType = MATRIX_GENERAL;
move.l a3,a0
clr.l $1280(a0)
L236
; ctx->NewProjectionMatrix = GL_FALSE;
move.l a3,a0
clr.b $127E(a0)
movem.l (a7)+,a2/a3
rts
SECTION "_gl_analyze_texture_matrix:0",CODE
;void gl_analyze_texture_matrix( GLcontext *ctx )
XDEF _gl_analyze_texture_matrix
_gl_analyze_texture_matrix
movem.l d2/a2/a3,-(a7)
move.l $10(a7),a3
L237
; for (texSet = 0;
moveq #0,d2
bra L258
L238
; const GLfloat *m = ctx->TextureMatrix[texSet];
lea $1BD2(a3),a0
move.l d2,d0
asl.l #6,d0
lea 0(a0,d0.l),a2
; if (is_identity(m))
move.l a2,-(a7)
jsr _is_identity
addq.w #4,a7
tst.b d0
beq.b L240
L239
; ctx->TextureMatrixType[texSet] = MATRIX_IDENTITY;
lea $1BCA(a3),a0
move.l #1,0(a0,d2.l*4)
bra L257
L240
; else if ( m[ 8]==0.0F
fmove.s $20(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L241
fmove.s $24(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L242
fmove.s $8(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L243
fmove.s $18(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L244
fmove.s $28(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L251
L245
fmove.s $38(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L246
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L247
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L248
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L251
L249
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L251
L250
; ctx->TextureMatrixType[texSet] = MATRIX_2D;
lea $1BCA(a3),a0
move.l #4,0(a0,d2.l*4)
bra.b L257
L251
; else if (m[3]==0.0F && m[7]==0.0F && m[11]==0.0F &&
fmove.s $C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L256
L252
fmove.s $1C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L256
L253
fmove.s $2C(a2),fp0
fcmp.s #$.00000000,fp0
fbne.b L256
L254
fmove.s $3C(a2),fp0
fcmp.s #$.3F800000,fp0
fbne.b L256
L255
; ctx->TextureMatrixType[texSet] = MATRIX_3D;
lea $1BCA(a3),a0
move.l #6,0(a0,d2.l*4)
bra.b L257
L256
; ctx->TextureMatrixType[texSet] = MATRIX_GENERAL;
lea $1BCA(a3),a0
clr.l 0(a0,d2.l*4)
L257
addq.l #1,d2
L258
cmp.l #2,d2
blo L238
L259
; ctx->NewTextureMatrix = GL_FALSE;
move.l a3,a0
clr.b $1BC8(a0)
movem.l (a7)+,d2/a2/a3
rts
SECTION "_gl_Frustum:0",CODE
;void gl_Frustum( GLcontext *ctx,
XDEF _gl_Frustum
_gl_Frustum
L267 EQU -$64
link a5,#L267
move.l a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
move.l $8(a5),a2
fmove.d $2C(a5),fp2
fmove.d $34(a5),fp3
fmove.d $24(a5),fp4
fmove.d $14(a5),fp5
fmove.d $1C(a5),fp7
L261
; if (nearval<=0.0 || farval<=0.0)
fcmp.d #$.00000000.00000000,fp2
fbole.b L263
L262
fcmp.d #$.00000000.00000000,fp3
fbogt.b L264
L263
; gl_error( ctx, GL_INVALID_VALUE, "glFrustum(near or far)
move.l #L260,-(a7)
pea $501.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
L264
; x = (2.0*nearval) / (right-left);
fmove.x fp2,fp0
fmul.d #$.40000000.00000000,fp0
fmove.x fp5,fp1
fsub.d $C(a5),fp1
fdiv.x fp1,fp0
fmove.s fp0,-4(a5)
; y = (2.0*nearval) / (top-bottom);
fmove.x fp2,fp0
fmul.d #$.40000000.00000000,fp0
fmove.x fp4,fp1
fsub.x fp7,fp1
fdiv.x fp1,fp0
fmove.s fp0,-$8(a5)
; a = (right+left) / (right-left);
fmove.x fp5,fp0
fadd.d $C(a5),fp0
fsub.d $C(a5),fp5
fdiv.x fp5,fp0
fmove.s fp0,-$C(a5)
; b = (top+bottom) / (top-bottom);
fmove.x fp4,fp0
fadd.x fp7,fp0
fsub.x fp7,fp4
fdiv.x fp4,fp0
fmove.x fp0,fp5
; c = -(farval+nearval) / ( farval-nearval);
fmove.x fp3,fp0
fadd.x fp2,fp0
fneg.d fp0
fmove.x fp3,fp1
fsub.x fp2,fp1
fdiv.x fp1,fp0
fmove.x fp0,fp4
; d = -(2.0*farval*nearval) / (farval-nearval);
fmove.x fp3,fp0
fmul.d #$.40000000.00000000,fp0
fmul.x fp2,fp0
fneg.d fp0
fmove.x fp3,fp1
fsub.x fp2,fp1
fdiv.x fp1,fp0
; M(0,0) = x;
move.l -4(a5),-$58(a5)
; M(0,1) = 0.0F;
lea -$58(a5),a0
clr.l $10(a0)
; M(0,2) = a;
lea -$58(a5),a0
move.l -$C(a5),$20(a0)
; M(0,3) = 0.0F;
lea -$58(a5),a0
clr.l $30(a0)
; M(1,0) = 0.0F;
lea -$58(a5),a0
clr.l 4(a0)
; M(1,1) = y;
lea -$58(a5),a0
move.l -$8(a5),$14(a0)
; M(1,2) = b;
lea -$58(a5),a0
fmove.s fp5,$24(a0)
; M(1,3) = 0.0F;
lea -$58(a5),a0
clr.l $34(a0)
; M(2,0) = 0.0F;
lea -$58(a5),a0
clr.l $8(a0)
; M(2,1) = 0.0F;
lea -$58(a5),a0
clr.l $18(a0)
; M(2,2) = c;
lea -$58(a5),a0
fmove.s fp4,$28(a0)
; M(2,3) = d;
lea -$58(a5),a0
fmove.s fp0,$38(a0)
; M(3,0) = 0.0F;
lea -$58(a5),a0
clr.l $C(a0)
; M(3,1) = 0.0F;
lea -$58(a5),a0
clr.l $1C(a0)
; M(3,2) = -1.0F;
lea -$58(a5),a0
move.l #$BF800000,$2C(a0)
; M(3,3) = 0.0F;
lea -$58(a5),a0
clr.l $3C(a0)
; gl_MultMatrixf( ctx, m );
pea -$58(a5)
move.l a2,-(a7)
jsr _gl_MultMatrixf
addq.w #$8,a7
; ctx->NearFarStack[ctx->ProjectionStackDepth][0] = nearval;
fmove.x fp2,fp0
lea $1AC8(a2),a0
move.l $12C4(a2),d0
fmove.s fp0,0(a0,d0.l*8)
; ctx->NearFarStack[ctx->ProjectionStackDepth][1] = farval;
fmove.x fp3,fp0
lea $1AC8(a2),a0
move.l $12C4(a2),d0
lea 0(a0,d0.l*8),a0
fmove.s fp0,4(a0)
; if (ctx->Driver.NearFar)
tst.l $97C(a2)
beq.b L266
L265
; (*ctx->Driver.NearFar)( ctx, nearval, farval );
fmove.x fp3,fp0
fmove.s fp0,-(a7)
fmove.x fp2,fp0
fmove.s fp0,-(a7)
move.l a2,-(a7)
move.l $97C(a2),a0
jsr (a0)
add.w #$C,a7
L266
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
move.l (a7)+,a2
unlk a5
rts
L260
dc.b 'glFrustum(near or far)',0
SECTION "_gl_Ortho:0",CODE
;void gl_Ortho( GLcontext *ctx,
XDEF _gl_Ortho
_gl_Ortho
L271 EQU -$64
link a5,#L271
move.l a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
move.l $8(a5),a2
fmove.d $24(a5),fp1
fmove.d $14(a5),fp2
fmove.d $2C(a5),fp3
fmove.d $34(a5),fp4
fmove.d $1C(a5),fp5
fmove.d $C(a5),fp7
L268
; x = 2.0 / (right-left);
fmove.x fp2,fp0
fsub.x fp7,fp0
fmove.d #$.40000000.00000000,fp6
fdiv.x fp0,fp6
fmove.x fp6,fp0
fmove.s fp0,-4(a5)
; y = 2.0 / (top-bottom);
fmove.x fp1,fp0
fsub.x fp5,fp0
fmove.d #$.40000000.00000000,fp6
fdiv.x fp0,fp6
fmove.x fp6,fp0
fmove.s fp0,-$8(a5)
; z = -2.0 / (farval-nearval);
fmove.x fp4,fp0
fsub.x fp3,fp0
fmove.d #$.C0000000.00000000,fp6
fdiv.x fp0,fp6
fmove.x fp6,fp0
fmove.s fp0,-$C(a5)
; tx = -(right+left) / (right-left);
fmove.x fp2,fp0
fadd.x fp7,fp0
fneg.d fp0
fsub.x fp7,fp2
fdiv.x fp2,fp0
fmove.x fp0,fp6
; ty = -(top+bottom) / (top-bottom);
fmove.x fp1,fp0
fadd.x fp5,fp0
fneg.d fp0
fsub.x fp5,fp1
fdiv.x fp1,fp0
fmove.x fp0,fp2
; tz = -(farval+nearval) / (farval-nearval);
fmove.x fp4,fp0
fadd.x fp3,fp0
fneg.d fp0
fmove.x fp4,fp1
fsub.x fp3,fp1
fdiv.x fp1,fp0
; M(0,0) = x;
move.l -4(a5),-$58(a5)
; M(0,1) = 0.0F;
lea -$58(a5),a0
clr.l $10(a0)
; M(0,2) = 0.0F;
lea -$58(a5),a0
clr.l $20(a0)
; M(0,3) = tx;
lea -$58(a5),a0
fmove.s fp6,$30(a0)
; M(1,0) = 0.0F;
lea -$58(a5),a0
clr.l 4(a0)
; M(1,1) = y;
lea -$58(a5),a0
move.l -$8(a5),$14(a0)
; M(1,2) = 0.0F;
lea -$58(a5),a0
clr.l $24(a0)
; M(1,3) = ty;
lea -$58(a5),a0
fmove.s fp2,$34(a0)
; M(2,0) = 0.0F;
lea -$58(a5),a0
clr.l $8(a0)
; M(2,1) = 0.0F;
lea -$58(a5),a0
clr.l $18(a0)
; M(2,2) = z;
lea -$58(a5),a0
move.l -$C(a5),$28(a0)
; M(2,3) = tz;
lea -$58(a5),a0
fmove.s fp0,$38(a0)
; M(3,0) = 0.0F;
lea -$58(a5),a0
clr.l $C(a0)
; M(3,1) = 0.0F;
lea -$58(a5),a0
clr.l $1C(a0)
; M(3,2) = 0.0F;
lea -$58(a5),a0
clr.l $2C(a0)
; M(3,3) = 1.0F;
lea -$58(a5),a0
move.l #$3F800000,$3C(a0)
; gl_MultMatrixf( ctx, m );
pea -$58(a5)
move.l a2,-(a7)
jsr _gl_MultMatrixf
addq.w #$8,a7
; if (ctx->Driver.NearFar)
tst.l $97C(a2)
beq.b L270
L269
; (*ctx->Driver.NearFar)( ctx, nearval, farval );
fmove.x fp4,fp0
fmove.s fp0,-(a7)
fmove.x fp3,fp0
fmove.s fp0,-(a7)
move.l a2,-(a7)
move.l $97C(a2),a0
jsr (a0)
add.w #$C,a7
L270
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
move.l (a7)+,a2
unlk a5
rts
SECTION "_gl_MatrixMode:0",CODE
;void gl_MatrixMode( GLcontext *ctx, GLenum mode )
XDEF _gl_MatrixMode
_gl_MatrixMode
move.l $8(a7),d0
move.l 4(a7),a0
L273
; if (INSIDE_BEGIN_END(ctx))
move.l a0,a1
add.l #$E968,a1
move.l (a1),d1
cmp.l #$1A00,d1
beq.b L275
L274
; gl_error( ctx, GL_INVALID_OPERATION, "glMatrixMode" );
move.l #L272,-(a7)
pea $502.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
rts
L275
; switch (mode)
move.l d0,d1
cmp.l #$1701,d1
beq.b L276
bgt.b L279
cmp.l #$1700,d1
beq.b L276
bra.b L277
L279
cmp.l #$1702,d1
beq.b L276
bra.b L277
;
L276
; ctx->Transform.MatrixMode = mode;
add.l #$E4D2,a0
move.l d0,(a0)
;
bra.b L278
L277
; gl_error( ctx, GL_INVALID_ENUM, "glMatrixMode" );
move.l #L272,-(a7)
pea $500.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
L278
rts
L272
dc.b 'glMatrixMode',0
SECTION "_gl_PushMatrix:0",CODE
;void gl_PushMatrix( GLcontext *ctx )
XDEF _gl_PushMatrix
_gl_PushMatrix
movem.l d2/a2,-(a7)
move.l $C(a7),a2
L282
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L284
L283
; gl_error( ctx, GL_INVALID_OPERATION, "glPushMatrix" );
move.l #L280,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L284
; switch (ctx->Transform.MatrixMode)
move.l a2,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L288
bgt.b L296
cmp.l #$1700,d0
beq.b L285
bra L294
L296
cmp.l #$1702,d0
beq L291
bra L294
;
L285
; if (ctx->ModelViewStackDepth>=MAX_MODELVIEW_STACK_
move.l $A7A(a2),d0
cmp.l #$1F,d0
blo.b L287
L286
; gl_error( ctx, GL_STACK_OVERFLOW, "glPushMa
move.l #L280,-(a7)
pea $503.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L287
; 16*sizeof(GLflo
pea $40.w
pea $9FA(a2)
lea $A7E(a2),a0
move.l $A7A(a2),d0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->ModelViewStackDepth++;
addq.l #1,$A7A(a2)
;
bra L295
L288
; if (ctx->ProjectionStackDepth>=MAX_PROJECTION_STAC
move.l $12C4(a2),d0
cmp.l #$20,d0
blo.b L290
L289
; gl_error( ctx, GL_STACK_OVERFLOW, "glPushMa
move.l #L280,-(a7)
pea $503.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L290
; 16*sizeof(GLflo
pea $40.w
pea $1284(a2)
lea $12C8(a2),a0
move.l $12C4(a2),d0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->ProjectionStackDepth++;
addq.l #1,$12C4(a2)
; ctx->NearFarStack[ctx->ProjectionStackDepth][0]
move.l $12C4(a2),d0
subq.l #1,d0
lea $1AC8(a2),a0
fmove.s 0(a0,d0.l*8),fp0
lea $1AC8(a2),a0
move.l $12C4(a2),d0
fmove.s fp0,0(a0,d0.l*8)
; ctx->NearFarStack[ctx->ProjectionStackDepth][1]
move.l $12C4(a2),d0
subq.l #1,d0
lea $1AC8(a2),a0
lea 0(a0,d0.l*8),a0
fmove.s 4(a0),fp0
lea $1AC8(a2),a0
move.l $12C4(a2),d0
lea 0(a0,d0.l*8),a0
fmove.s fp0,4(a0)
;
bra L295
L291
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a2,a0
add.l #$DEBA,a0
move.l 4(a0),d2
; if (ctx->TextureStackDepth[texSet] >= MAX_TE
lea $1C52(a2),a0
move.l 0(a0,d2.l*4),d0
cmp.l #$A,d0
blo.b L293
L292
; gl_error( ctx, GL_STACK_OVERFLOW, "gl
move.l #L280,-(a7)
pea $503.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L293
; 16*sizeof
pea $40.w
lea $1BD2(a2),a0
move.l d2,d0
asl.l #6,d0
pea 0(a0,d0.l)
lea $1C5A(a2),a0
move.l d2,d0
muls.l #$280,d0
lea 0(a0,d0.l),a1
lea $1C52(a2),a0
move.l 0(a0,d2.l*4),d0
asl.l #6,d0
pea 0(a1,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->TextureStackDepth[texSet]++;
lea $1C52(a2),a0
lea 0(a0,d2.l*4),a0
addq.l #1,(a0)
;
bra.b L295
L294
; gl_problem(ctx, "Bad matrix mode in gl_PushMatrix")
move.l #L281,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
L295
movem.l (a7)+,d2/a2
rts
L281
dc.b 'Bad matrix mode in gl_PushMatrix',0
L280
dc.b 'glPushMatrix',0
SECTION "_gl_PopMatrix:0",CODE
;void gl_PopMatrix( GLcontext *ctx )
XDEF _gl_PopMatrix
_gl_PopMatrix
movem.l d2/a2,-(a7)
move.l $C(a7),a2
L299
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L301
L300
; gl_error( ctx, GL_INVALID_OPERATION, "glPopMatrix" );
move.l #L297,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L301
; switch (ctx->Transform.MatrixMode)
move.l a2,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L305
bgt.b L315
cmp.l #$1700,d0
beq.b L302
bra L313
L315
cmp.l #$1702,d0
beq L310
bra L313
;
L302
; if (ctx->ModelViewStackDepth==0)
tst.l $A7A(a2)
bne.b L304
L303
; gl_error( ctx, GL_STACK_UNDERFLOW, "glPopMa
move.l #L297,-(a7)
pea $504.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L304
; ctx->ModelViewStackDepth--;
subq.l #1,$A7A(a2)
; 16*sizeof(GLflo
pea $40.w
lea $A7E(a2),a0
move.l $A7A(a2),d0
asl.l #6,d0
pea 0(a0,d0.l)
pea $9FA(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewModelViewMatrix = GL_TRUE;
move.b #1,$9F4(a2)
;
bra L314
L305
; if (ctx->ProjectionStackDepth==0)
tst.l $12C4(a2)
bne.b L307
L306
; gl_error( ctx, GL_STACK_UNDERFLOW, "glPopMa
move.l #L297,-(a7)
pea $504.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L307
; ctx->ProjectionStackDepth--;
subq.l #1,$12C4(a2)
; 16*sizeof(GLflo
pea $40.w
lea $12C8(a2),a0
move.l $12C4(a2),d0
asl.l #6,d0
pea 0(a0,d0.l)
pea $1284(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewProjectionMatrix = GL_TRUE;
move.b #1,$127E(a2)
; GLfloat nearVal = ctx->NearFarStack[ctx->Pro
lea $1AC8(a2),a0
move.l $12C4(a2),d0
fmove.s 0(a0,d0.l*8),fp1
; GLfloat farVal = ctx->NearFarStack[ctx->Pro
lea $1AC8(a2),a0
move.l $12C4(a2),d0
lea 0(a0,d0.l*8),a0
fmove.s 4(a0),fp0
; if (ctx->Driver.NearFar)
tst.l $97C(a2)
beq.b L309
L308
; (*ctx->Driver.NearFar)( ctx, nearVal,
fmove.s fp0,-(a7)
fmove.s fp1,-(a7)
move.l a2,-(a7)
move.l $97C(a2),a0
jsr (a0)
add.w #$C,a7
L309
;
bra L314
L310
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a2,a0
add.l #$DEBA,a0
move.l 4(a0),d0
; if (ctx->TextureStackDepth[texSet]==0)
lea $1C52(a2),a0
tst.l 0(a0,d0.l*4)
bne.b L312
L311
; gl_error( ctx, GL_STACK_UNDERFLOW, "g
move.l #L297,-(a7)
pea $504.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L312
; ctx->TextureStackDepth[texSet]--;
lea $1C52(a2),a0
lea 0(a0,d0.l*4),a0
subq.l #1,(a0)
; 16*sizeof
pea $40.w
lea $1C5A(a2),a0
move.l d0,d1
muls.l #$280,d1
lea 0(a0,d1.l),a1
lea $1C52(a2),a0
move.l 0(a0,d0.l*4),d1
asl.l #6,d1
pea 0(a1,d1.l)
lea $1BD2(a2),a0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewTextureMatrix = GL_TRUE;
move.b #1,$1BC8(a2)
;
bra.b L314
L313
; gl_problem(ctx, "Bad matrix mode in gl_PopMatrix");
move.l #L298,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
L314
movem.l (a7)+,d2/a2
rts
L298
dc.b 'Bad matrix mode in gl_PopMatrix',0
L297
dc.b 'glPopMatrix',0
SECTION "_gl_LoadIdentity:0",CODE
;void gl_LoadIdentity( GLcontext *ctx )
XDEF _gl_LoadIdentity
_gl_LoadIdentity
movem.l d2/a2,-(a7)
move.l $C(a7),a2
L318
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L320
L319
; gl_error( ctx, GL_INVALID_OPERATION, "glLoadIdentity" );
move.l #L316,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2
rts
L320
; switch (ctx->Transform.MatrixMode)
move.l a2,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L322
bgt.b L326
cmp.l #$1700,d0
beq.b L321
bra L324
L326
cmp.l #$1702,d0
beq.b L323
bra L324
;
L321
;ctx->ModelViewMat
pea $40.w
pea _Identity(a6)
pea $9FA(a2)
jsr _q_memcpy
add.w #$C,a7
;Y( ctx->ModelView
pea $40.w
pea _Identity(a6)
pea $A3A(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->ModelViewMatrixType = MATRIX_IDENTITY;
move.l #1,$9F6(a2)
; ctx->NewModelViewMatrix = GL_FALSE;
clr.b $9F4(a2)
;
bra.b L325
L322
;tx->ProjectionMat
pea $40.w
pea _Identity(a6)
pea $1284(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->ProjectionMatrixType = MATRIX_IDENTITY;
move.l #1,$1280(a2)
; ctx->NewProjectionMatrix = GL_FALSE;
clr.b $127E(a2)
;
bra.b L325
L323
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a2,a0
add.l #$DEBA,a0
move.l 4(a0),d2
;extureMatrix[texS
pea $40.w
pea _Identity(a6)
lea $1BD2(a2),a0
move.l d2,d0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->TextureMatrixType[texSet] = MATRIX_IDEN
lea $1BCA(a2),a0
move.l #1,0(a0,d2.l*4)
; ctx->NewTextureMatrix = GL_FALSE;
clr.b $1BC8(a2)
;
bra.b L325
L324
; gl_problem(ctx, "Bad matrix mode in gl_LoadIdentit
move.l #L317,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
L325
movem.l (a7)+,d2/a2
rts
L317
dc.b 'Bad matrix mode in gl_LoadIdentity',0
L316
dc.b 'glLoadIdentity',0
SECTION "_gl_LoadMatrixf:0",CODE
;void gl_LoadMatrixf( GLcontext *ctx, const GLfloat *m )
XDEF _gl_LoadMatrixf
_gl_LoadMatrixf
movem.l a2/a3,-(a7)
fmovem.x fp2/fp3/fp4,-(a7)
movem.l $30(a7),a2/a3
L329
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L331
L330
; gl_error( ctx, GL_INVALID_OPERATION, "glLoadMatrix" );
move.l #L327,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
fmovem.x (a7)+,fp2/fp3/fp4
movem.l (a7)+,a2/a3
rts
L331
; switch (ctx->Transform.MatrixMode)
move.l a2,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L333
bgt.b L345
cmp.l #$1700,d0
beq.b L332
bra L343
L345
cmp.l #$1702,d0
beq L342
bra L343
;
L332
;EMCPY( ctx->Model
pea $40.w
move.l a3,-(a7)
pea $9FA(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewModelViewMatrix = GL_TRUE;
move.b #1,$9F4(a2)
;
bra L344
L333
;MCPY( ctx->Projec
pea $40.w
move.l a3,-(a7)
pea $1284(a2)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewProjectionMatrix = GL_TRUE;
move.b #1,$127E(a2)
; c = M(2,2);
fmove.s $28(a3),fp0
; d = M(2,3);
fmove.s $38(a3),fp3
; if (c == 1.0)
fmove.x fp0,fp1
fcmp.d #$.3FF00000.00000000,fp1
fbne.b L335
L334
; n = 0.0;
fmove.s #$.00000000,fp2
bra.b L336
L335
; n = d / (c - 1.0);
fmove.x fp3,fp1
fmove.x fp0,fp2
fsub.d #$.3FF00000.00000000,fp2
fdiv.x fp2,fp1
fmove.x fp1,fp2
L336
; if (c == -1.0)
fmove.x fp0,fp1
fcmp.d #$.BFF00000.00000000,fp1
fbne.b L338
L337
; f = 1.0;
fmove.s #$.3F800000,fp0
bra.b L339
L338
; f = d / (c + 1.0);
fmove.x fp3,fp1
fadd.d #$.3FF00000.00000000,fp0
fdiv.x fp0,fp1
fmove.x fp1,fp0
L339
; ctx->NearFarStack[ctx->ProjectionStackDepth]
lea $1AC8(a2),a0
move.l $12C4(a2),d0
fmove.s fp2,0(a0,d0.l*8)
; ctx->NearFarStack[ctx->ProjectionStackDepth]
lea $1AC8(a2),a0
move.l $12C4(a2),d0
lea 0(a0,d0.l*8),a0
fmove.s fp0,4(a0)
; if (ctx->Driver.NearFar)
tst.l $97C(a2)
beq.b L341
L340
; (*ctx->Driver.NearFar)( ctx, n, f );
fmove.s fp0,-(a7)
fmove.s fp2,-(a7)
move.l a2,-(a7)
move.l $97C(a2),a0
jsr (a0)
add.w #$C,a7
L341
;
bra.b L344
L342
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a2,a0
add.l #$DEBA,a0
move.l 4(a0),d0
; ctx->TextureMatr
pea $40.w
move.l a3,-(a7)
lea $1BD2(a2),a0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _q_memcpy
add.w #$C,a7
; ctx->NewTextureMatrix = GL_TRUE;
move.b #1,$1BC8(a2)
;
bra.b L344
L343
; gl_problem(ctx, "Bad matrix mode in gl_LoadMatrixf
move.l #L328,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
L344
fmovem.x (a7)+,fp2/fp3/fp4
movem.l (a7)+,a2/a3
rts
L328
dc.b 'Bad matrix mode in gl_LoadMatrixf',0
L327
dc.b 'glLoadMatrix',0
SECTION "_gl_MultMatrixf:0",CODE
;void gl_MultMatrixf( GLcontext *ctx, const GLfloat *m )
XDEF _gl_MultMatrixf
_gl_MultMatrixf
move.l a2,-(a7)
move.l $C(a7),a0
move.l $8(a7),a2
L348
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a1
add.l #$E968,a1
move.l (a1),d0
cmp.l #$1A00,d0
beq.b L350
L349
; gl_error( ctx, GL_INVALID_OPERATION, "glMultMatrix" );
move.l #L346,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
move.l (a7)+,a2
rts
L350
; switch (ctx->Transform.MatrixMode)
move.l a2,a1
add.l #$E4D2,a1
move.l (a1),d0
cmp.l #$1701,d0
beq.b L352
bgt.b L356
cmp.l #$1700,d0
beq.b L351
bra L354
L356
cmp.l #$1702,d0
beq.b L353
bra.b L354
;
L351
; matmul( ctx->ModelViewMatrix, ctx->ModelViewMatrix
move.l a0,-(a7)
pea $9FA(a2)
pea $9FA(a2)
jsr _matmul
add.w #$C,a7
; ctx->NewModelViewMatrix = GL_TRUE;
move.b #1,$9F4(a2)
;
bra.b L355
L352
; matmul( ctx->ProjectionMatrix, ctx->ProjectionMatrix, m );
move.l a0,-(a7)
pea $1284(a2)
pea $1284(a2)
jsr _matmul
add.w #$C,a7
; ctx->NewProjectionMatrix = GL_TRUE;
move.b #1,$127E(a2)
;
bra.b L355
L353
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a2,a1
add.l #$DEBA,a1
move.l 4(a1),d0
; matmul( ctx->TextureMatrix[texSet], ctx->Tex
move.l a0,-(a7)
lea $1BD2(a2),a0
move.l d0,d1
asl.l #6,d1
pea 0(a0,d1.l)
lea $1BD2(a2),a0
asl.l #6,d0
pea 0(a0,d0.l)
jsr _matmul
add.w #$C,a7
; ctx->NewTextureMatrix = GL_TRUE;
move.b #1,$1BC8(a2)
;
bra.b L355
L354
; gl_problem(ctx, "Bad matrix mode in gl_MultMatrixf
move.l #L347,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
L355
move.l (a7)+,a2
rts
L347
dc.b 'Bad matrix mode in gl_MultMatrixf',0
L346
dc.b 'glMultMatrix',0
SECTION "_gl_rotation_matrix:0",CODE
;void gl_rotation_matrix( GLfloat angle, GLfloat x, GLfloat y, GLfloa
XDEF _gl_rotation_matrix
_gl_rotation_matrix
L360 EQU -$48
link a5,#L360
move.l a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
move.l $18(a5),a2
fmove.s $14(a5),fp2
fmove.s $10(a5),fp3
fmove.s $C(a5),fp4
fmove.s $8(a5),fp5
L357
; s = sin( angle * DEG2RAD );
fmove.x fp5,fp0
fmul.d #$.3F91DF46.9D353915,fp0
fmove.d fp0,-(a7)
jsr _sin__r
addq.w #$8,a7
fmove.d fp0,-(a7)
movem.l (a7)+,d7/a0
; c = cos( angle * DEG2RAD );
fmove.x fp5,fp0
fmul.d #$.3F91DF46.9D353915,fp0
fmove.d fp0,-(a7)
jsr _cos__r
addq.w #$8,a7
fmove.x fp0,fp5
; mag = GL_SQRT( x*x + y*y + z*z );
fmove.x fp4,fp0
fmul.x fp4,fp0
fmove.x fp3,fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.x fp2,fp1
fmul.x fp2,fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if (mag == 0.0)
fmove.x fp0,fp1
ftst.d fp1
fbne.b L359
L358
; MEMCPY(m, Identity
pea $40.w
pea _Identity(a6)
move.l a2,-(a7)
jsr _q_memcpy
add.w #$C,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
move.l (a7)+,a2
unlk a5
rts
L359
; x /= mag;
fdiv.x fp0,fp4
; y /= mag;
fdiv.x fp0,fp3
; z /= mag;
fdiv.x fp0,fp2
; xx = x * x;
fmove.x fp4,fp1
fmul.x fp4,fp1
; yy = y * y;
fmove.x fp3,fp0
fmul.x fp3,fp0
fmove.s fp0,-$14(a5)
; zz = z * z;
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.s fp0,-$18(a5)
; xy = x * y;
fmove.x fp4,fp0
fmul.x fp3,fp0
fmove.s fp0,-$1C(a5)
; yz = y * z;
fmove.x fp3,fp0
fmul.x fp2,fp0
fmove.s fp0,-$20(a5)
; zx = z * x;
fmove.x fp2,fp0
fmul.x fp4,fp0
fmove.s fp0,-$24(a5)
; xs = x * s;
fmul.x fp7,fp4
; ys = y * s;
fmul.x fp7,fp3
; zs = z * s;
fmul.x fp7,fp2
; one_c = 1.0F - c;
fmove.s #$.3F800000,fp0
fsub.x fp5,fp0
; M(0,0) = (one_c * xx) + c;
fmul.x fp0,fp1
fadd.x fp5,fp1
fmove.s fp1,(a2)
; M(0,1) = (one_c * xy) - zs;
fmove.x fp0,fp1
fmul.s -$1C(a5),fp1
fsub.x fp2,fp1
fmove.s fp1,$10(a2)
; M(0,2) = (one_c * zx) + ys;
fmove.x fp0,fp1
fmul.s -$24(a5),fp1
fadd.x fp3,fp1
fmove.s fp1,$20(a2)
; M(0,3) = 0.0F;
clr.l $30(a2)
; M(1,0) = (one_c * xy) + zs;
fmove.x fp0,fp1
fmul.s -$1C(a5),fp1
fadd.x fp2,fp1
fmove.s fp1,4(a2)
; M(1,1) = (one_c * yy) + c;
fmove.x fp0,fp1
fmul.s -$14(a5),fp1
fadd.x fp5,fp1
fmove.s fp1,$14(a2)
; M(1,2) = (one_c * yz) - xs;
fmove.x fp0,fp1
fmul.s -$20(a5),fp1
fsub.x fp4,fp1
fmove.s fp1,$24(a2)
; M(1,3) = 0.0F;
clr.l $34(a2)
; M(2,0) = (one_c * zx) - ys;
fmove.x fp0,fp1
fmul.s -$24(a5),fp1
fsub.x fp3,fp1
fmove.s fp1,$8(a2)
; M(2,1) = (one_c * yz) + xs;
fmove.x fp0,fp1
fmul.s -$20(a5),fp1
fadd.x fp4,fp1
fmove.s fp1,$18(a2)
; M(2,2) = (one_c * zz) + c;
fmul.s -$18(a5),fp0
fadd.x fp5,fp0
fmove.s fp0,$28(a2)
; M(2,3) = 0.0F;
clr.l $38(a2)
; M(3,0) = 0.0F;
clr.l $C(a2)
; M(3,1) = 0.0F;
clr.l $1C(a2)
; M(3,2) = 0.0F;
clr.l $2C(a2)
; M(3,3) = 1.0F;
move.l #$3F800000,$3C(a2)
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
move.l (a7)+,a2
unlk a5
rts
SECTION "_gl_Rotatef:0",CODE
;void gl_Rotatef( GLcontext *ctx,
XDEF _gl_Rotatef
_gl_Rotatef
L362 EQU -$40
link a5,#L362
move.l a2,-(a7)
fmovem.x fp2/fp3,-(a7)
move.l $8(a5),a2
fmove.s $C(a5),fp0
fmove.s $10(a5),fp1
fmove.s $14(a5),fp2
fmove.s $18(a5),fp3
L361
; gl_rotation_matrix( angle, x, y, z, m );
pea -$40(a5)
fmove.s fp3,-(a7)
fmove.s fp2,-(a7)
fmove.s fp1,-(a7)
fmove.s fp0,-(a7)
jsr _gl_rotation_matrix
add.w #$14,a7
; gl_MultMatrixf( ctx, m );
pea -$40(a5)
move.l a2,-(a7)
jsr _gl_MultMatrixf
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3
move.l (a7)+,a2
unlk a5
rts
SECTION "_gl_Scalef:0",CODE
;void gl_Scalef( GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z )
XDEF _gl_Scalef
_gl_Scalef
fmovem.x fp2/fp3/fp4,-(a7)
move.l $28(a7),a1
fmove.s $34(a7),fp1
fmove.s $30(a7),fp2
fmove.s $2C(a7),fp3
L365
; if (INSIDE_BEGIN_END(ctx))
move.l a1,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L367
L366
; gl_error( ctx, GL_INVALID_OPERATION, "glScale" );
move.l #L363,-(a7)
pea $502.w
move.l a1,-(a7)
jsr _gl_error
add.w #$C,a7
fmovem.x (a7)+,fp2/fp3/fp4
rts
L367
; switch (ctx->Transform.MatrixMode)
move.l a1,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L369
bgt.b L373
cmp.l #$1700,d0
beq.b L368
bra.b L371
L373
cmp.l #$1702,d0
beq.b L370
bra.b L371
;
L368
; m = ctx->ModelViewMatrix;
lea $9FA(a1),a0
; ctx->NewModelViewMatrix = GL_TRUE;
move.b #1,$9F4(a1)
;
bra.b L372
L369
; m = ctx->ProjectionMatrix;
lea $1284(a1),a0
; ctx->NewProjectionMatrix = GL_TRUE;
move.b #1,$127E(a1)
;
bra.b L372
L370
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a1,a0
add.l #$DEBA,a0
move.l 4(a0),d0
; m = ctx->TextureMatrix[texSet];
lea $1BD2(a1),a0
asl.l #6,d0
add.l d0,a0
; ctx->NewTextureMatrix = GL_TRUE;
move.b #1,$1BC8(a1)
;
bra.b L372
L371
; gl_problem(ctx, "Bad matrix mode in gl_Scalef");
move.l #L364,-(a7)
move.l a1,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4
rts
L372
; return;
; m[0] *= x;
fmove.s (a0),fp0
fmul.x fp3,fp0
fmove.s fp0,(a0)
; m[4] *= y;
lea $10(a0),a1
fmove.s (a1),fp0
fmul.x fp2,fp0
fmove.s fp0,(a1)
; m[8] *= z;
lea $20(a0),a1
fmove.s (a1),fp0
fmul.x fp1,fp0
fmove.s fp0,(a1)
; m[1] *= x;
lea 4(a0),a1
fmove.s (a1),fp0
fmul.x fp3,fp0
fmove.s fp0,(a1)
; m[5] *= y;
lea $14(a0),a1
fmove.s (a1),fp0
fmul.x fp2,fp0
fmove.s fp0,(a1)
; m[9] *= z;
lea $24(a0),a1
fmove.s (a1),fp0
fmul.x fp1,fp0
fmove.s fp0,(a1)
; m[2] *= x;
lea $8(a0),a1
fmove.s (a1),fp0
fmul.x fp3,fp0
fmove.s fp0,(a1)
; m[6] *= y;
lea $18(a0),a1
fmove.s (a1),fp0
fmul.x fp2,fp0
fmove.s fp0,(a1)
; m[10] *= z;
lea $28(a0),a1
fmove.s (a1),fp0
fmul.x fp1,fp0
fmove.s fp0,(a1)
; m[3] *= x;
lea $C(a0),a1
fmove.s (a1),fp0
fmul.x fp3,fp0
fmove.s fp0,(a1)
; m[7] *= y;
lea $1C(a0),a1
fmove.s (a1),fp0
fmul.x fp2,fp0
fmove.s fp0,(a1)
; m[11] *= z;
add.w #$2C,a0
fmove.s (a0),fp0
fmul.x fp1,fp0
fmove.s fp0,(a0)
fmovem.x (a7)+,fp2/fp3/fp4
rts
L364
dc.b 'Bad matrix mode in gl_Scalef',0
L363
dc.b 'glScale',0
SECTION "_gl_Translatef:0",CODE
;void gl_Translatef( GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z )
XDEF _gl_Translatef
_gl_Translatef
fmovem.x fp2/fp3/fp4/fp5,-(a7)
move.l $34(a7),a1
fmove.s $40(a7),fp2
fmove.s $3C(a7),fp3
fmove.s $38(a7),fp4
L376
; if (INSIDE_BEGIN_END(ctx))
move.l a1,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L378
L377
; gl_error( ctx, GL_INVALID_OPERATION, "glTranslate" );
move.l #L374,-(a7)
pea $502.w
move.l a1,-(a7)
jsr _gl_error
add.w #$C,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5
rts
L378
; switch (ctx->Transform.MatrixMode)
move.l a1,a0
add.l #$E4D2,a0
move.l (a0),d0
cmp.l #$1701,d0
beq.b L380
bgt.b L384
cmp.l #$1700,d0
beq.b L379
bra.b L382
L384
cmp.l #$1702,d0
beq.b L381
bra.b L382
;
L379
; m = ctx->ModelViewMatrix;
lea $9FA(a1),a0
; ctx->NewModelViewMatrix = GL_TRUE;
move.b #1,$9F4(a1)
;
bra.b L383
L380
; m = ctx->ProjectionMatrix;
lea $1284(a1),a0
; ctx->NewProjectionMatrix = GL_TRUE;
move.b #1,$127E(a1)
;
bra.b L383
L381
; GLuint texSet = ctx->Texture.CurrentTransfor
move.l a1,a0
add.l #$DEBA,a0
move.l 4(a0),d0
; m = ctx->TextureMatrix[texSet];
lea $1BD2(a1),a0
asl.l #6,d0
add.l d0,a0
; ctx->NewTextureMatrix = GL_TRUE;
move.b #1,$1BC8(a1)
;
bra.b L383
L382
; gl_problem(ctx, "Bad matrix mode in gl_Translatef")
move.l #L375,-(a7)
move.l a1,-(a7)
jsr _gl_problem
addq.w #$8,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5
rts
L383
; return;
; m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
fmove.s (a0),fp0
fmul.x fp4,fp0
fmove.s $10(a0),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.s $20(a0),fp1
fmul.x fp2,fp1
fadd.x fp1,fp0
fadd.s $30(a0),fp0
fmove.s fp0,$30(a0)
; m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
fmove.s 4(a0),fp0
fmul.x fp4,fp0
fmove.s $14(a0),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.s $24(a0),fp1
fmul.x fp2,fp1
fadd.x fp1,fp0
fadd.s $34(a0),fp0
fmove.s fp0,$34(a0)
; m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
fmove.s $8(a0),fp0
fmul.x fp4,fp0
fmove.s $18(a0),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.s $28(a0),fp1
fmul.x fp2,fp1
fadd.x fp1,fp0
fadd.s $38(a0),fp0
fmove.s fp0,$38(a0)
; m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
fmove.s $C(a0),fp0
fmul.x fp4,fp0
fmove.s $1C(a0),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.s $2C(a0),fp1
fmul.x fp2,fp1
fadd.x fp1,fp0
fadd.s $3C(a0),fp0
fmove.s fp0,$3C(a0)
fmovem.x (a7)+,fp2/fp3/fp4/fp5
rts
L375
dc.b 'Bad matrix mode in gl_Translatef',0
L374
dc.b 'glTranslate',0
SECTION "_gl_Viewport:0",CODE
;void gl_Viewport( GLcontext *ctx,
XDEF _gl_Viewport
_gl_Viewport
movem.l d2-d5/a2,-(a7)
move.l $28(a7),d2
move.l $24(a7),d3
move.l $20(a7),d4
move.l $1C(a7),d5
move.l $18(a7),a2
L386
; if (width<0 || height<0)
tst.l d3
bmi.b L388
L387
tst.l d2
bpl.b L389
L388
; gl_error( ctx, GL_INVALID_VALUE, "glViewport" );
move.l #L385,-(a7)
pea $501.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2-d5/a2
rts
L389
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L391
L390
; gl_error( ctx, GL_INVALID_OPERATION, "glViewport" );
move.l #L385,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2-d5/a2
rts
L391
; width = CLAMP( width, 1, MAX_WIDTH );
cmp.l #1,d3
bge.b L393
L392
moveq #1,d3
bra.b L397
L393
cmp.l #$640,d3
ble.b L395
L394
move.l #$640,d3
L395
L396
L397
; height = CLAMP( height, 1, MAX_HEIGHT );
cmp.l #1,d2
bge.b L399
L398
moveq #1,d2
bra.b L403
L399
cmp.l #$4B0,d2
ble.b L401
L400
move.l #$4B0,d2
L401
L402
L403
; ctx->Viewport.X = x;
move.l a2,a0
add.l #$E540,a0
move.l d5,(a0)
; ctx->Viewport.Width = width;
move.l a2,a0
add.l #$E548,a0
move.l d3,(a0)
; ctx->Viewport.Y = y;
move.l a2,a0
add.l #$E544,a0
move.l d4,(a0)
; ctx->Viewport.Height = height;
move.l a2,a0
add.l #$E54C,a0
move.l d2,(a0)
; ctx->Viewport.Sx = (GLfloat) width / 2.0F;
fmove.l d3,fp0
fdiv.s #$.40000000,fp0
move.l a2,a0
add.l #$E558,a0
fmove.s fp0,(a0)
; ctx->Viewport.Tx = ctx->Viewport.Sx + x;
move.l a2,a0
add.l #$E540,a0
fmove.l d5,fp1
fmove.s $18(a0),fp0
fadd.x fp1,fp0
move.l a2,a0
add.l #$E564,a0
fmove.s fp0,(a0)
; ctx->Viewport.Sy = (GLfloat) height / 2.0F;
fmove.l d2,fp0
fdiv.s #$.40000000,fp0
move.l a2,a0
add.l #$E55C,a0
fmove.s fp0,(a0)
; ctx->Viewport.Ty = ctx->Viewport.Sy + y;
move.l a2,a0
add.l #$E540,a0
fmove.l d4,fp1
fmove.s $1C(a0),fp0
fadd.x fp1,fp0
move.l a2,a0
add.l #$E568,a0
fmove.s fp0,(a0)
; ctx->NewState |= NEW_ALL;
move.l a2,a0
add.l #$E960,a0
move.l (a0),d0
or.l #$FF,d0
move.l a2,a0
add.l #$E960,a0
move.l d0,(a0)
; gl_ResizeBuffersMESA(ctx);
move.l a2,-(a7)
jsr _gl_ResizeBuffersMESA
addq.w #4,a7
; if (ctx->Driver.Viewport)
tst.l $9E4(a2)
beq.b L405
L404
; (*ctx->Driver.Viewport)( ctx, x, y, width, height );
move.l d2,-(a7)
move.l d3,-(a7)
move.l d4,-(a7)
move.l d5,-(a7)
move.l a2,-(a7)
move.l $9E4(a2),a0
jsr (a0)
add.w #$14,a7
L405
movem.l (a7)+,d2-d5/a2
rts
L385
dc.b 'glViewport',0
SECTION "_gl_DepthRange:0",CODE
;void gl_DepthRange( GLcontext *ctx, GLclampd nearval, GLclampd farva
XDEF _gl_DepthRange
_gl_DepthRange
fmovem.x fp2/fp3/fp4/fp5,-(a7)
move.l $34(a7),a0
fmove.d $40(a7),fp3
fmove.d $38(a7),fp4
L407
; if (INSIDE_BEGIN_END(ctx))
move.l a0,a1
add.l #$E968,a1
move.l (a1),d0
cmp.l #$1A00,d0
beq.b L409
L408
; gl_error( ctx, GL_INVALID_OPERATION, "glDepthRange" );
move.l #L406,-(a7)
pea $502.w
move.l a0,-(a7)
jsr _gl_error
add.w #$C,a7
fmovem.x (a7)+,fp2/fp3/fp4/fp5
rts
L409
; n = (GLfloat) CLAMP( nearval, 0.0, 1.0 );
fcmp.d #$.00000000.00000000,fp4
fboge.b L411
L410
fmove.d #$.00000000.00000000,fp0
bra.b L415
L411
fcmp.d #$.3FF00000.00000000,fp4
fbole.b L413
L412
fmove.d #$.3FF00000.00000000,fp0
bra.b L414
L413
fmove.x fp4,fp0
L414
L415
fmove.x fp0,fp1
; f = (GLfloat) CLAMP( farval, 0.0, 1.0 );
fcmp.d #$.00000000.00000000,fp3
fboge.b L417
L416
fmove.d #$.00000000.00000000,fp0
bra.b L421
L417
fcmp.d #$.3FF00000.00000000,fp3
fbole.b L419
L418
fmove.d #$.3FF00000.00000000,fp0
bra.b L420
L419
fmove.x fp3,fp0
L420
L421
; ctx->Viewport.Near = n;
move.l a0,a1
add.l #$E550,a1
fmove.s fp1,(a1)
; ctx->Viewport.Far = f;
move.l a0,a1
add.l #$E554,a1
fmove.s fp0,(a1)
; ctx->Viewport.Sz = DEPTH_SCALE * ((f - n) / 2.0);
fmove.x fp0,fp2
fsub.x fp1,fp2
fdiv.d #$.40000000.00000000,fp2
fmul.d #$.40EFFFE0.00000000,fp2
move.l a0,a1
add.l #$E560,a1
fmove.s fp2,(a1)
; ctx->Viewport.Tz = DEPTH_SCALE * ((f - n) / 2.0 + n);
fsub.x fp1,fp0
fdiv.d #$.40000000.00000000,fp0
fadd.x fp1,fp0
fmul.d #$.40EFFFE0.00000000,fp0
move.l a0,a1
add.l #$E56C,a1
fmove.s fp0,(a1)
; if (ctx->Driver.DepthRange)
tst.l $9E8(a0)
beq.b L423
L422
; (*ctx->Driver.DepthRange)( ctx, nearval, farval );
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
move.l a0,-(a7)
move.l $9E8(a0),a0
jsr (a0)
add.w #$14,a7
L423
fmovem.x (a7)+,fp2/fp3/fp4/fp5
rts
L406
dc.b 'glDepthRange',0
END